import { PageParam } from '@/services/common'
import { covertTableData } from '@/utils/tableUtil'
import { request } from '@umijs/max'

export interface MpVO {
  type: string
  /**
   * id
   */
  id: number
  appId: string
  /**
   * 昵称
   */
  nickName?: string
  /**
   * 头像
   */
  headImg?: string
  /**
   * 公众号/服务号类型
   */
  serviceTypeInfo?: number
  /**
   * 公众号认证类型
   */
  verifyTypeInfo?: number
  /**
   * 公众号名称
   */
  userName?: string
  /**
   * 公司名
   */
  principalName?: string
  /**
   * 是否开通微信支付
   */
  openPay?: boolean
  /**
   * 是否开通微信摇一摇功能
   */
  openShake?: boolean
  /**
   * 是否开通微信扫商品功能
   */
  openScan?: boolean
  /**
   * 是否开通微信卡券功能
   */
  openCard?: boolean
  /**
   * 是否开通微信门店功能
   */
  openStore?: boolean
  /**
   * 微信公众号设置的微信号
   */
  alias?: string
  /**
   * 二维码
   */
  qrcodeUrl?: string
  /**
   * 账号状态
   */
  accountStatus?: number
  /**
   * 账号介绍
   */
  signature?: string
  /**
   * 小程序注册方式
   */
  registerType?: number
  /**
   * 创建时间
   */
  createdTime?: string
  /**
   * 更新时间
   */
  updatedTime?: string
}

export interface MpQueryDTO extends PageParam {
  /**
   * id
   */
  id?: number
  /**
   * 昵称
   */
  nickName?: string
  /**
   * 头像
   */
  headImg?: string
  /**
   * 公众号/服务号类型
   */
  serviceTypeInfo?: number
  /**
   * 公众号认证类型
   */
  verifyTypeInfo?: number
  /**
   * 公众号名称
   */
  userName?: string
  /**
   * 公司名
   */
  principalName?: string
  /**
   * 是否开通微信支付
   */
  openPay?: boolean
  /**
   * 是否开通微信摇一摇功能
   */
  openShake?: boolean
  /**
   * 是否开通微信扫商品功能
   */
  openScan?: boolean
  /**
   * 是否开通微信卡券功能
   */
  openCard?: boolean
  /**
   * 是否开通微信门店功能
   */
  openStore?: boolean
  /**
   * 微信公众号设置的微信号
   */
  alias?: string
  /**
   * 二维码
   */
  qrcodeUrl?: string
  /**
   * 账号状态
   */
  accountStatus?: number
  /**
   * 账号介绍
   */
  signature?: string
  /**
   * 小程序注册方式
   */
  registerType?: number
  /**
   * 创建时间
   */
  createdTime?: string
  /**
   * 更新时间
   */
  updatedTime?: string
}

export interface MpUpdateDTO {
  /**
   * id
   */
  id: number
  /**
   * 昵称
   */
  nickName?: string
  /**
   * 头像
   */
  headImg?: string
  /**
   * 公众号/服务号类型
   */
  serviceTypeInfo?: number
  /**
   * 公众号认证类型
   */
  verifyTypeInfo?: number
  /**
   * 公众号名称
   */
  userName?: string
  /**
   * 公司名
   */
  principalName?: string
  /**
   * 是否开通微信支付
   */
  openPay?: boolean
  /**
   * 是否开通微信摇一摇功能
   */
  openShake?: boolean
  /**
   * 是否开通微信扫商品功能
   */
  openScan?: boolean
  /**
   * 是否开通微信卡券功能
   */
  openCard?: boolean
  /**
   * 是否开通微信门店功能
   */
  openStore?: boolean
  /**
   * 微信公众号设置的微信号
   */
  alias?: string
  /**
   * 二维码
   */
  qrcodeUrl?: string
  /**
   * 账号状态
   */
  accountStatus?: number
  /**
   * 账号介绍
   */
  signature?: string
  /**
   * 小程序注册方式
   */
  registerType?: number
  /**
   * 创建时间
   */
  createdTime?: string
  /**
   * 更新时间
   */
  updatedTime?: string
  /**
   * 租户id
   */
  tenantId: number
  type: string
}

export const getMpById = async (id: string) => {
  return request<MpVO>(`/api/mp?id=${id}`, { method: 'GET' })
}

export const getMpList = async (params?: MpQueryDTO) => {
  return request<MpVO[]>(`/api/mp/list`, { method: 'GET', params })
}

export const getMpPage = async (params: MpQueryDTO) => {
  let response = await request<Array<MpVO>>(`/api/mp/page`, { method: 'GET', params })
  return covertTableData(response)
}

export const updateMp = async (mpUpdateDTO: MpUpdateDTO) => {
  return request<MpVO>(`/api/mp/update`, { method: 'POST', data: mpUpdateDTO })
}

export const saveMp = async (mpUpdateDTO: MpUpdateDTO) => {
  return request<MpVO>(`/api/mp/save`, { method: 'POST', data: mpUpdateDTO })
}

export const removeMp = async (id: number) => {
  return request<boolean>(`/api/mp/remove?id=${id}`, { method: 'POST' })
}

export const getLoginQr = async (appId: string) => {
  return request<string>(`/api/mp/getMpLoginQr?appId=${appId}`)
}
